//
//  ProblemOffer50.swift
//  TestProject
//
//  Created by 武侠 on 2022/2/23.
//  Copyright © 2022 zhulong. All rights reserved.
//

import UIKit

/*
 剑指 Offer 50. 第一个只出现一次的字符 ✅
 在字符串 s 中找出第一个只出现一次的字符。如果没有，返回一个单空格。 s 只包含小写字母。

 示例 1:
     输入：s = "abaccdeff"
     输出：'b'
 示例 2:
     输入：s = ""
     输出：' '
  
 限制：
    0 <= s 的长度 <= 50000
 */
class ProblemOffer50: NSObject {
    func solution() {
        print(firstUniqChar("abaccdeff"))
        print(firstUniqChar(""))
    }
    
    /*
     因为只包含小写字母，只需要长度是26的数组
     */
    func firstUniqChar(_ s: String) -> Character {
        var dic:[Character : UInt8] = [:]
        var array:[Character] = []
        for c in s {
            if dic[c] == nil {
                dic[c] = 1
                array.append(c)
            } else if dic[c] == 1 {
                dic[c] = 2
            }
        }
        
        for key in array {
            if dic[key] == 1 {
                return key
            }
        }
        
        return " "
    }
}

